package com.req;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.MultipartConfig;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;

@WebServlet(urlPatterns = "/req3",name = "req3")
@MultipartConfig
public class request3 extends HttpServlet {
    /**
     * HttpServletRequest 是 ServletRequest 的 子接口
     * 此时，ServletRequest 中的 方法， 在 HttpServletRequest中一定会存在
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 请求行中 的数据
        // 请求方法
        String method=req.getMethod();
        // 请求的URL
        StringBuffer url = req.getRequestURL();
        // 请求的协议
        String protocol = req.getProtocol();
        System.out.println(method);
        System.out.println(url);
        System.out.println(protocol);

        // 请求的URI
        String uri = req.getRequestURI();
        // 很重要
        // 获取请求中的 上下文路径 （ ContextPath ）
        String path = req.getContextPath();
        // 获取 查询字符串 一般是 get请求中的 ? 之后的部分
        String queryString = req.getQueryString();
        System.out.println(uri);
        System.out.println(path);
        System.out.println(queryString);


        // 请求头中的数据
        // 获取 Cookie
        Cookie[] cookies = req.getCookies();
        String s = Arrays.toString(cookies);
        System.out.println(s);

        // 获取请求头
        Enumeration<String> names = req.getHeaderNames();
        while (names.hasMoreElements()){
            String element = names.nextElement();
            // 根据 请求头的名字来获取 请求头中的值
            String header = req.getHeader(element);
            System.out.println(names+":"+header);
        }
    }
}
